home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Tutorial / Cookbook / 20.alarm / MyObject.m < prev    next >
Text File  |  1995-06-12  |  3KB  |  139 lines

  1.  
  2. /* Generated by Interface Builder */
  3. #import <string.h>
  4. #import <math.h>
  5. #import <sys/time.h>        
  6. #import "MyObject.h"
  7. #import <appkit/Form.h>
  8. #import <appkit/Application.h>
  9. #import <appkit/Panel.h>
  10. #import <appkit/nextstd.h>
  11.  
  12. @implementation MyObject
  13.  
  14. void update (teNum, now, myself)
  15. DPSTimedEntry teNum;
  16. double now;
  17. id myself;
  18. {
  19.     [myself doTimedEntry];        
  20. }
  21.  
  22. + new
  23. {
  24.    self = [super new];
  25.    message = FALSE;
  26.    stop = FALSE;
  27.    return self;
  28. }
  29.  
  30. - startTimedEntry
  31. {
  32.     clockTE = DPSAddTimedEntry(60.0, &update, self, NX_MODALRESPTHRESHOLD);
  33.     return self;
  34. }
  35.  
  36. - stopTimedEntry
  37. {
  38.     DPSRemoveTimedEntry (clockTE);
  39.     return self;
  40. }
  41.  
  42. - doTimedEntry
  43. {
  44.     static int localCounter;
  45.     localCounter += 1;
  46.     [self displayCurrentTime];
  47.     if ((hour == sliderHour)  && (min >= sliderMin)  && (min < sliderMin+10)) {
  48.        if (!stop ){
  49.           system("/usr/bin/sndplay /NextLibrary/Sounds/Basso.snd");
  50.           system("/usr/bin/sndplay /tmp/sample.snd");
  51.        }
  52.     }
  53. }
  54.  
  55. // Good programming practice. Free what you create!
  56. - free
  57. {
  58.     [self stopTimedEntry];
  59.     return [super free];
  60. }
  61.  
  62. - setAlarmHour:anObject
  63. {
  64.     alarmHour = anObject;
  65.     [self startTimedEntry];
  66.     return self;
  67. }
  68.  
  69. - setAlarmMin:anObject
  70. {
  71.     alarmMin = anObject;
  72.     return self;
  73. }
  74.  
  75. - setCurrentHour:anObject
  76. {
  77.     currentHour = anObject;
  78.     [self displayCurrentTime];
  79.     return self;
  80. }
  81.  
  82. - setCurrentMin:anObject
  83. {
  84.     currentMin = anObject;
  85.     [self displayCurrentTime];
  86.     return self;
  87. }
  88.  
  89. - setAlarm:sender
  90. {
  91.     if (!message) {
  92.         [self recordMessage:self];
  93.     }
  94.     stop = FALSE;
  95.     // printf("Alarm Set at %d:%d\n", sliderHour, sliderMin);
  96.     return self;
  97. }
  98.  
  99. - displayCurrentTime //
  100. {
  101.    gettimeofday (¤tTime, NULL);
  102.    localTime = localtime (&(currentTime.tv_sec));
  103.    hour = localTime->tm_hour; 
  104.    min  = localTime->tm_min;
  105.    // sec  = localTime->tm_sec;
  106.    [currentHour setIntValue:hour];
  107.    [currentMin setIntValue:min];   
  108. }
  109.  
  110. - recordMessage:sender
  111. {
  112.     // call up sound editor and save to a file
  113.     // update the alarm list file
  114.     system("/NextDeveloper/Examples/SoundEditor/SoundEditor");
  115.     message=TRUE;
  116.     return self;
  117. }
  118.  
  119. - stopAlarm:sender
  120. {
  121.     stop = TRUE;
  122.     return self;
  123. }
  124.  
  125.  
  126. // get the value from the slider and set the alarm
  127. - getValue:sender
  128. {
  129.     sliderFloat = [sender floatValue];
  130.     sliderHour = floor(sliderFloat);
  131.     sliderMin = 60.0 * (sliderFloat - (float) sliderHour); // drop fraction
  132.     sliderMin = ((sliderMin + 2) / 5) * 5;   // round to nearist 5 minute
  133.     [alarmHour setIntValue:sliderHour];
  134.     [alarmMin setIntValue:sliderMin];
  135.     return self;
  136. }
  137.  
  138. @end
  139.